package com.sjksy.demo.exception;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

//全局异常处理器，很好用的，简单使用则可
@ControllerAdvice
public class GlobalExceptionHandler {

//    多个异常处理器呢？见下方注释
    @ExceptionHandler(value = {Exception.class})
    public ResponseEntity<ErrorMessage> handleException(Exception e){
        e.printStackTrace();
        return ResponseEntity.internalServerError().body(new ErrorMessage("error!!", e.getMessage()));
    }
}


//Spring会根据抛出的异常类型匹配最合适的处理器方法。
// 如果存在多个能够处理相同异常类型的处理器方法，那么Spring会选择第一个匹配的方法（基于方法声明的顺序）。


// 错误消息类
@Data
@NoArgsConstructor
@AllArgsConstructor
class ErrorMessage {
    private String message;
    private String details;

}
